package com.ibeeking.found.msg.service.common.po;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@Data
@Accessors(chain = true)
public class BaseMassagePO implements Serializable {

    //接收方帐号（收到的OpenID）
    private String toUserName;

    //开发者微信号
    private String fromUserName;

    //消息创建时间 （整型）
    private Long createTime;

    //消息类型，文本为text 图片为image 语音为voice 视频为video 音乐为music 图文为news
    private String msgType;

    //文本类型
    private String content;

    //事件类型
    private String event;

    //图片类型
    private  Image image;

    //音频类型
    private Voice voice;

    //视频类型
    private Video video;

    //图文数量
    private Integer articleCount ;

    private List<Article> articles;

    @Data
    @Accessors(chain = true)
    public static class Image {
        //通过素材管理中的接口上传多媒体文件，得到的id
        private String mediaId;
    }

    @Data
    @Accessors(chain = true)
    public static class Voice {
        //通过素材管理中的接口上传多媒体文件，得到的id
        private String mediaId;
    }

    @Data
    @Accessors(chain = true)
    public static class Video {
        //通过素材管理中的接口上传多媒体文件，得到的id
        private String mediaId;
        private String title;
        private String description;
    }

    @Data
    @Accessors(chain = true)
    public static class Article {
        //通过素材管理中的接口上传多媒体文件，得到的id
        private String picUrl;
        private String title;
        private String description;
        private String url;
    }

    public BaseMassagePO addArticles(Article article){
        synchronized (this){
            if(this.articles==null){
                this.articles = new ArrayList<>();
            }
        }

        this.articles.add(article);
        this.articleCount = this.articles.size();
        return this;
    }

    public BaseMassagePO setArticles(List<Article> articles){
        this.articles = articles;
        this.articleCount = this.articles.size();
        return this;
    }



}
